有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用列表更新java hibernate实体

我需要在hibernate中更新实体,比如

class EntityA {
private String name

//one-to-many, orhpan removal = true, bidirectioanl
private List<EntityB> listB;
}

我从RESTAPI接收对象,需要更新listB中的项和实体A的名称

可以更新/删除/添加列表中的项目

从hibernate的角度来看,这方面的最佳实践是什么


共 (1) 个答案

  1. # 1 楼答案

    第一件事是您使用http请求调用的表示资源的格式

    • JSON
    • XML

    如果您的资源格式是json,那么您需要将json对象映射到java对象,并使用JPA进行管理

    示例

    假设您的json格式资源包含以下名为user_info的用户数据。json

    { 
      "firstName" : "jack",
      "lastName"  : "Dawson",
      "contacts" : [
                    {
                      "cellphone" : "434343",
                      "address" : "agrabad",
                      "city"  : "ctg"
                    },
                    {
                      "cellphone" : "+88667755",
                      "address" : "chokbazar",
                      "city"  : "dhk"
                     }
                   ]
          }
    

    您的用户pojo类是:

    public class User {
    
    Private String firstName;
    Private String lastName;
    private Collection<Contact> contacts;
    
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public Collection<Contact> getContacts() {
        return contacts;
    }
    public void setContacts(Collection<Contact> contacts) {
        this.contacts = contacts;
    }
    } 
    

    有很多json库,我个人更喜欢谷歌开发的Gson。 所以使用Gson可以将json对象映射到java对象。以下是关于将json映射到java对象的代码片段:

    User user = new Gson().fromJson("user_info_Json_String", User.class)
    

    您已经完成了映射。您所要做的就是根据EntityManager操作执行用户对象

    注意:映射期间,用户类状态必须与json键字符串匹配

    若资源格式是XML,那个么JAXB是将对象编组和解编组为XML的强大功能,反之亦然

    更新:要将联系人集合更新到数据库,我们不需要逐个添加元素。Java集合具有方法调用addAll()。只是使用它。以下是一个例子:

    Collection<Contacts> jsonUserContacs = user.getContacts();
    Collection<Contacts> dbContacts = dbuser.getContacts();
    dbContacts.addAll(jsonUserContacs);
    

    就这样。您不需要逐个添加联系人

    希望这次知识转移能对你有所帮助。谢谢